1. Field of the Invention
The present invention is related to allocating shared resources and more particularly to selecting an optimal set of virtual machine images for satisfying resource requests and instantiating virtual machines with minimal overhead and minimum wasted resources.
2. Background Description
Acquiring, managing and maintaining Information Technology (IT) is a major budgetary concern for any modern organization. Moreover, local physical hardware, e.g., mainframe servers, is seldom used at full capacity. To reduce IT infrastructure costs and waste, instead of acquiring physical hardware, organizations are increasingly consolidating workload on shared hardware, using virtual machines (VMs) hosted on provider servers or computers. Ideally, each VM appears as an independent computer (e.g., a virtual processor, memory and disk space) running, for example, an operating system (OS) and a software stack with one or more active software elements (e.g., applications or other software).
As with any stand-alone computer, it takes some measurable time to set up each VM from scratch. For example, provisioning a VM may involve allocating shared hardware for the VM and then, opening the OS and installing the software stack on the VM. So for efficiency, rather than spending time setting each VM up from scratch, providers are capturing the state of the allocated virtual hardware and configured software in a file representation or virtual machine image. The VM images are subsequently reused for an identical or substantially similar VM, merely by loading the image to arrive at the same state.
So, a minimum VM image is a file representation of a configured virtual machine and/or the virtual machine device(s). A VM image may further include all installed software components, i.e., the OS and software stack. Normally, each image is packaged with metadata describing corresponding hardware and software requirements in a virtual resource template (VRT or template). Each template includes at least one, and can include more than one, image. Providers can more efficiently provision virtual machines from a selection of available images. One or more virtualizer server loads the VM image(s) from a respective template to instantiate and run the respective virtual machine(s). Then, the server customizes the loaded image(s) for specific request requirements.
While using images to provision and instantiate VMs may save time over configuring the same VMs from scratch, maintaining these rather large image files consumes storage space, sufficient space, for example, to reproduce the memory, slack, disk and cache contents dedicated to the respective VM. So, rather than create a VM image for every potential configuration, cloud providers try to guess which VM images to keep to satisfy the most requests.
Prior approaches to selecting VM images have focused primarily on reducing software deployment/configuration time. One approach evaluates virtual machine image similarity to select images that reduce the data volume transferred from storage to the hypervisor on which VMs are instantiated, without regard to the time required to instantiate the VMs. Another approach derives VM templates that match the majority of the user requests in a Cloud infrastructure, again without regard to the time required to instantiate the VMs or the volume of data involved in the images.
Thus, there is a need for identifying an optimal number of VM images, and more particularly, there is a need for identifying an optimal set of VM images with the bundled software for subsequent reuse that make the best use of system resources.